﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComunesMGI.DataTypes;
using MGI.AccesoDatos;

namespace MGI.Logica
{
    public class MgrClientes
    {
        #region Singleton

        /// <summary>
        /// implementación de singleton para el manejador de clientes
        /// </summary>
        static private MgrClientes _instance;

        /// <summary>
        /// implementación de singleton para el manejador de clientes
        /// retorna una instancia del manejador
        /// </summary>
        /// <returns>MgrClientes</returns>
        static public MgrClientes GetInstance()
        {
            if (_instance == null)
            {
                _instance = new MgrClientes();
            }
            return _instance;
        }

        #endregion

        public List<DataCliente> GetClientes()
        {
            AccesoDatosFactory accesoDatosFactory = AccesoDatosFactory.GetInstance();
            IDatosClientes datosclientes = accesoDatosFactory.GetIDatosClientes();
            return datosclientes.GetClientes();

        }

        public bool ContainFileCliente(string cliente)
        {
            AccesoDatosFactory accesoDatosFactory = AccesoDatosFactory.GetInstance();
            IDatosClientes datosclientes = accesoDatosFactory.GetIDatosClientes();
            return datosclientes.ContainFileCliente(cliente);
        }


        public DataCliente GetCliente(int codCliente)
        {
            AccesoDatosFactory accesoDatosFactory = AccesoDatosFactory.GetInstance();
            IDatosClientes datosclientes = accesoDatosFactory.GetIDatosClientes();
            return datosclientes.GetCliente(codCliente);
        }

        public int AddCliente(DataCliente cli)
        { 
            AccesoDatosFactory accesoDatosFactory = AccesoDatosFactory.GetInstance();
            IDatosClientes datosclientes = accesoDatosFactory.GetIDatosClientes();
            return datosclientes.AddCliente(cli);
        }

        public void BajaCliente(int cliCod)
        {
            AccesoDatosFactory accesoDatosFactory = AccesoDatosFactory.GetInstance();
            IDatosClientes datosclientes = accesoDatosFactory.GetIDatosClientes();
            datosclientes.BajaCliente(cliCod);
        }

        public void ModificarCliente(DataCliente cli)
        {
            AccesoDatosFactory accesoDatosFactory = AccesoDatosFactory.GetInstance();
            IDatosClientes datosclientes = accesoDatosFactory.GetIDatosClientes();
            datosclientes.ModificarCliente(cli);
        }
    }
}
